//
//  AppDelegate.swift
//  TYCWeiBo
//
//  Created by 中发 on 2018/5/29.
//  Copyright © 2018年 中发. All rights reserved.
//

/**
 总结：通过跟随视频学习，以微博为项目进行实战，学习Swift的使用，期间结合自己学习Swift2.0的书籍，发现了很多问题，且3.0与2.0的区别很大，而且在4.0之后相对于3.0来说，又做了很多大的改动，
 1、在本项目中，缺失的部分有由于使用YYModel进行数据解析，在这里通过使用YYModel 解后，无法获取数据，原因可能是3.0使用方法与4.0使用方法有所改变。这里会在今后的学习中想办法解决这个问题。
 2、同时由于在做表情键盘的时候获取的数据资源跟之视频的不同，所以导致路径获取有问题，最终未能显示完整的表情键盘
 3.在处理查看图片的时候，由于没有视频中相关的源文件，因此这里未做视频查看的功能
 4.本次微博项目是紧跟着视频进行编程，有时候几乎没有思考只是为了完成代码的编写，因此由于源文件缺失的原因，有部分功能未完善。将会在第二次进行完善学习。
 本次学习，视频课程只有12天，但是在实际学习的过程中，由于种种其他环境因素导致学习话费将近四个月。学习还是需要集中注意力一次到位，不然中间会有很多断层，影响后期的学习心态
 
 */


///下载修改测试
import UIKit
import UserNotifications
import SVProgressHUD
import AFNetworking

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        //设置应用程序额外信息
        setUpAddition()

        window = UIWindow()
        window?.backgroundColor = UIColor.white
        window?.rootViewController = WBMainViewController()
        window?.makeKeyAndVisible()
        
        loadAppInfo()
        return true
    }

}

// MARK: - 设置应用程序额外信息
extension AppDelegate {
    func setUpAddition() {
        //设置SVProgressHUD最小解除时间
        SVProgressHUD.setMinimumDismissTimeInterval(1)
        //设置网络加载指示器
        AFNetworkActivityIndicatorManager.shared().isEnabled = true
        //设置用户授权通知
        //#available检测版本，如果是iOS10.0以上
        if #available(iOS 10.0, *) {
            UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .carPlay, .sound]) { (success, error) in
            }
        } else {
            //10.0以下
            //取得用户授权显示通知
            let notifitySettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
            UIApplication.shared.registerUserNotificationSettings(notifitySettings)
        }
    }
}
// MARK: - 从服务器加载应用程序信息
extension AppDelegate {
    
    private func loadAppInfo() {
        //模拟异步
        //url
        let url = Bundle.main.url(forResource: "main.json", withExtension: nil)
        //data
        let data = NSData(contentsOf: url!)
        //获取路径
        let docDir = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        let jsonPath = (docDir as NSString).appendingPathComponent("main.json")
        
        //写入磁盘
        data?.write(toFile: jsonPath, atomically: true)
        print("应用程序加载完毕\(jsonPath)")
        
    }
}
